package io.itit.ecp.admin.provide.action.req;

import io.itit.ecp.admin.provide.action.validation.ICarbonEmission;
import io.itit.ecp.admin.provide.action.validation.IEnergyType;
import io.itit.ecp.admin.provide.action.validation.IWarningType;
import io.itit.grass.common.provide.action.req.BaseReq;
import io.itit.grass.common.provide.action.validation.IQuery;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;

import javax.validation.constraints.NotBlank;
import java.util.List;

/**
 * 可视化-查询参数
 */
@Data
@ToString
@ApiModel("可视化-查询参数")
public class VisualizingQueryReq extends BaseReq {

    @ApiModelProperty("数据时间")
    private String solidifyDate;

    @NotBlank(groups = {IQuery.class})
    @ApiModelProperty("数据日期(起)")
    private String solidifyDateStart;

    @NotBlank(groups = {IQuery.class})
    @ApiModelProperty("数据日期(止)")
    private String solidifyDateEnd;

    @NotBlank(groups = {ICarbonEmission.class})
    @ApiModelProperty("统计方式(hour:时,day:日,month:月,year:年)")
    private String statisticsMode;

    @ApiModelProperty("项目Id")
    private String sceneProjectId;

    @ApiModelProperty("楼栋Id")
    private String sceneEdificeId;

    @ApiModelProperty("楼层Id")
    private String sceneFloorId;

    @ApiModelProperty("空间Id")
    private String sceneRoomId;

    @ApiModelProperty("公司Id")
    private String sceneCompanyId;

    @NotBlank(groups = {IEnergyType.class})
    @ApiModelProperty("能源类型Id")
    private String energyTypeId;

    @ApiModelProperty("能源类型Ids")
    private List<String> energyTypeIds;

    @ApiModelProperty("楼栋Ids")
    private List<String> sceneEdificeIds;

    @ApiModelProperty("楼层Ids")
    private List<String> sceneFloorIds;

    @ApiModelProperty("空间Ids")
    private List<String> sceneRoomIds;

    @ApiModelProperty("产品类型Ids")
    private List<String> productTypeIds;

    @NotBlank(groups = {IWarningType.class})
    @ApiModelProperty("预警类型(1:设备计量预警,2:碳排放预警) >> distCode：ecp-admin.earlyWarningRecord.warningType")
    private String warningType;

    @ApiModelProperty("分项统计范围(1:范围1,2:范围2,3:范围3)")
    private String itemRanges;

}
